<script setup>
import { findKey } from "lodash";
let ex1 = {

// 弹框相关信息
data: {
  showname: "", //(新建编辑表头显示名）
  isshow: "", //（新增编辑是否需要显示）
  valuetype: "", //数值类型，从接口获取 ??
  tips: "", //提示信息 ??
  getfunction: "" // {入参数据需要选择数据时，设定加载方法名（方法在下级目录设置好,这里定向调用）} ??
  // getvaluetype:（
  // 1.default:默认值（默认显示）
  // 2.token: token
  // 3. cache:缓存（设定参数名）
  // 4. 继承值，从前个操作中获取数据（设定固定模式）
  // 5. url: 路径带参数（设定参数名）
  // 6. others:其他方法的值
  // ）
},
// 加载页面样式方法 ??
pagePreload: {
  layout: {
    needload: "ss", //是否需要加载样式
    loadfunction: "" //加载样式方法，layout里选，同时默认入参
  },
  preload: {} //需要预加载方法，从方法里调用
},
pageRunning: {
  // ??
  gopage: { url: "" }, //( 或者路径+参数-设定参数同入参）
  btntype: "", // 按钮是弹出框还是跳转 linkbox/dialogbox
  closelayer: "", //指定settingcode
  // 第四级表示层级的
  level: "1", // linkbox/dialogbox
  // 按钮是跳转还是打开弹框 一般用在第五层和第六层
  btntype: "", // linkbox/dialogbox
  link: "", // 跳转地址
},
pageNeed: {
  pageNeed:()=>{},
  isData: true
},
boxsize: {
  weight: "",
  height: ""
},

// 请求的相关参数
requestApi: {
  url: "1",
  type: "", //url/json
  method: "", //post/get/
  requestFields: [], //请求相关参数或返回框架展示字段
  responseFields: [] //请求相关参数或返回框架展示字段
}
}

const hasObjKey = ( obj, path )=>{
    let paths = path.split( '.' ); // [ xxx, yyy, zzz ]
    let res = obj;
    let prop;
    while( prop = paths.shift() ) {
    res = res[ prop ];
    }
    return res;
}
console.log(`🚀 ~ hasObjKey(ex1,'pageRunning.level')`, hasObjKey(ex1,'pagePreload.layout.needload'))
</script>

<template>

</template>

<style scoped>
.logo {
  height: 6em;
  padding: 1.5em;
  will-change: filter;
  transition: filter 300ms;
}
.logo:hover {
  filter: drop-shadow(0 0 2em #646cffaa);
}
.logo.vue:hover {
  filter: drop-shadow(0 0 2em #42b883aa);
}
</style>
